home *** CD-ROM | disk | FTP | other *** search
/ Introducing the New Way to Shop From Home / Introducing the New Way to Shop From Home (Iceland Foods) (2003).iso / pc / help.dxr / UI elements_1_Multi-State Button.ls < prev    next >
Encoding:
Text File  |  2003-01-01  |  6.8 KB  |  216 lines

  1. property spriteNum, mySprite, myOffMember, myOffOverMember, myOffDownMember, myOffCommand, myOnMember, myOnOverMember, myOnDownMember, myOnCommand, theMouseWasUp, myRollover, myState, ourID, ourGroupList, ourMouseDown
  2.  
  3. on getBehaviorDescription me
  4.   return "MULTISTATE TOGGLE BUTTON" & RETURN & RETURN & "This behavior toggles the sprite it is attached to between two states: OFF and ON. " & "In each state, the member of the sprite is set according to the position of the mouse (elsewhere, rollover, mouseDown)." & RETURN & "The behavior returns the current state of the button in response to a #ToggleButton_State call." & RETURN & RETURN & "RADIO BUTTON GROUP" & RETURN & "To create a group of radio buttons, give each button in the same group the same ID. " & "Switching one button in the group on will switch all others off." & RETURN & RETURN & "PERMITTED MEMBER TYPES" & RETURN & "Graphic" & RETURN & RETURN & "PARAMETERS:" & RETURN & "-- OFF state --" & RETURN & "* Standard member (when mouse is elsewhere)" & RETURN & "* Rollover member" & RETURN & "* MouseDown member" & RETURN & "-- ON state --" & RETURN & "* Standard member" & RETURN & "* Rollover member" & RETURN & "* MouseDown member" & RETURN & "-- COMMAND --" & RETURN & "* Sent when the button is switched ON" & RETURN & "* Sent when the button is switched OFF" & RETURN & "-- Optional --" & RETURN & "* Toggle group ID (to create a group of radio buttons)" & RETURN & RETURN & "If members are placed consecutively in the cast in this order then default values can be used to create the button."
  5. end
  6.  
  7. on getBehaviorTooltip me
  8.   return "Create an ON/OFF button which reacts to rollovers and clicks. " & "Use several such buttons together as a radio button group."
  9. end
  10.  
  11. on beginSprite me
  12.   Initialize(me)
  13. end
  14.  
  15. on prepareFrame me
  16.   CheckForRollover(me)
  17. end
  18.  
  19. on mouseDown me
  20.   clickOn(me)
  21. end
  22.  
  23. on mouseUp me
  24.   if ourMouseDown[1] then
  25.     Toggle(me)
  26.   end if
  27. end
  28.  
  29. on mouseUpOutSide me
  30.   CheckGroupForClick(me)
  31. end
  32.  
  33. on Initialize me
  34.   mySprite = sprite(me.spriteNum)
  35.   ourGroupList = []
  36.   myOffMember = member(myOffMember)
  37.   myOffOverMember = member(myOffOverMember)
  38.   myOffDownMember = member(myOffDownMember)
  39.   myOnMember = member(myOnMember)
  40.   myOnOverMember = member(myOnOverMember)
  41.   myOnDownMember = member(myOnDownMember)
  42.   sendAllSprites(#ToggleButton_GroupRollCall, ourID, ourGroupList)
  43.   call(#ToggleButton_MouseDownList, ourGroupList, [0])
  44. end
  45.  
  46. on CheckForRollover me
  47.   mouseOverMe = the rollover = me.spriteNum
  48.   if myRollover = mouseOverMe then
  49.     if theMouseWasUp = the mouseUp then
  50.       exit
  51.     else
  52.       theMouseWasUp = the mouseUp
  53.       if mouseOverMe then
  54.         if the mouseUp then
  55.           case myState of
  56.             1:
  57.               mySprite.member = myOnOverMember
  58.             0:
  59.               mySprite.member = myOffOverMember
  60.           end case
  61.         end if
  62.       end if
  63.     end if
  64.   else
  65.     myRollover = mouseOverMe
  66.     if ourMouseDown[1] then
  67.       if myRollover then
  68.         case myState of
  69.           1:
  70.             mySprite.member = myOnDownMember
  71.           0:
  72.             mySprite.member = myOffDownMember
  73.         end case
  74.       else
  75.         case myState of
  76.           1:
  77.             mySprite.member = myOnMember
  78.           0:
  79.             mySprite.member = myOffMember
  80.         end case
  81.       end if
  82.     else
  83.       if not (the mouseDown) and myRollover then
  84.         case myState of
  85.           1:
  86.             mySprite.member = myOnOverMember
  87.           0:
  88.             mySprite.member = myOffOverMember
  89.         end case
  90.       else
  91.         case myState of
  92.           1:
  93.             mySprite.member = myOnMember
  94.           0:
  95.             mySprite.member = myOffMember
  96.         end case
  97.       end if
  98.     end if
  99.   end if
  100. end
  101.  
  102. on clickOn me
  103.   ourMouseDown[1] = 1
  104.   case myState of
  105.     1:
  106.       mySprite.member = myOnDownMember
  107.     0:
  108.       mySprite.member = myOffDownMember
  109.   end case
  110. end
  111.  
  112. on Toggle me, whichState
  113.   if voidp(whichState) then
  114.     myState = not myState
  115.   else
  116.     myState = whichState
  117.   end if
  118.   ourMouseDown[1] = 0
  119.   theMouseWasUp = 1
  120.   case myState of
  121.     1:
  122.       mySprite.member = myOnMember
  123.       updateStage()
  124.       do(myOnCommand)
  125.     0:
  126.       mySprite.member = myOffMember
  127.       updateStage()
  128.       do(myOffCommand)
  129.   end case
  130.   if ourGroupList.count() then
  131.     if myState then
  132.       call(#ToggleButton_Off, ourGroupList, me)
  133.     end if
  134.   end if
  135. end
  136.  
  137. on CheckGroupForClick me
  138.   groupRollover = call(#ToggleButton_Rollover, ourGroupList, [])
  139.   if not groupRollover.count() then
  140.     ourMouseDown[1] = 0
  141.   end if
  142. end
  143.  
  144. on ToggleButton_GroupRollCall me, groupID, groupList
  145.   if groupID = ourID then
  146.     ourGroupList = groupList
  147.     ourGroupList.append(me)
  148.   end if
  149.   return groupList
  150. end
  151.  
  152. on ToggleButton_MouseDownList me, mouseDownList
  153.   ourMouseDown = mouseDownList
  154. end
  155.  
  156. on ToggleButton_Rollover me, theList
  157.   if the rollover = me.spriteNum then
  158.     theList.append(me.spriteNum)
  159.   end if
  160.   return theList
  161. end
  162.  
  163. on ToggleButton_Off me, callingBehavior
  164.   if callingBehavior = me then
  165.     exit
  166.   end if
  167.   Toggle(me, 0)
  168. end
  169.  
  170. on ToggleButton_State me, groupID, statesList
  171.   if not voidp(groupID) then
  172.     if groupID <> ourID then
  173.       exit
  174.     end if
  175.   end if
  176.   case ilk(statesList) of
  177.     #void:
  178.       return myState
  179.     #list:
  180.       statesList.append(myState)
  181.     #propList:
  182.       statesList.addProp(me.spriteNum, myState)
  183.   end case
  184.   return statesList
  185. end
  186.  
  187. on ToggleButton_ActiveButton me, groupID, theList
  188.   if not voidp(groupID) then
  189.     if groupID <> ourID then
  190.       exit
  191.     end if
  192.   end if
  193.   if not listp(theList) then
  194.     theList = [:]
  195.   end if
  196.   if not theList.count() and myState then
  197.     theList.addProp(#sprite, me.spriteNum)
  198.     theList.addProp(#behavior, me)
  199.   end if
  200.   return theList
  201. end
  202.  
  203. on isOKToAttach me, aSpriteType, aSpriteNum
  204.   tisok = 0
  205.   if aSpriteType = #graphic then
  206.     tisok = 1
  207.   end if
  208.   return tisok
  209. end
  210.  
  211. on getPropertyDescriptionList me
  212.   theMember = sprite(the currentSpriteNum).member
  213.   theMemberNum = theMember.number
  214.   return [#myOffMember: [#comment: "-OFF STATE- Standard member:", #format: #graphic, #default: theMember], #myOffOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 1)], #myOffDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 2)], #myOnMember: [#comment: "-ON STATE- Standard member", #format: #graphic, #default: member(theMemberNum + 3)], #myOnOverMember: [#comment: "Rollover member", #format: #graphic, #default: member(theMemberNum + 4)], #myOnDownMember: [#comment: "MouseDown member", #format: #graphic, #default: member(theMemberNum + 5)], #myOnCommand: [#comment: "-COMMAND SENT- when switched ON", #format: #string, #default: "sendAllSprites #Toggle_On, the currentSpriteNum"], #myOffCommand: [#comment: "when switched OFF", #format: #string, #default: "sendAllSprites #Toggle_Off, the currentSpriteNum"], #ourID: [#comment: "ID string for the group", #format: #string, #default: EMPTY]]
  215. end
  216.